Schränker 2

← Zurück

Von Kveldulfur an Dr. Irata, DrIrata

Hallo Peter!

Wir haben seit Dienstag Corona zu Besuch. Meine Frau hat es erwischt. Der Rest der Familie hält sich wacker, aber Husten, Schnupfen und Halsschmerzen machen sich breit.

Ich habe Dir nun Schränker 2 zugesendet. Schau es Dir an...

Grüße Janko

Antworten

Hallo Janko, dann erstmal gute Besserung. Trotz Dreifachimpfung hatte es mich und meine Familie Anfang März auch erwischt... läuft in der Regel wie eine einfache Grippe ab. Dennoch nicht schön!! Schränker schaue ich mir gleich mal an... ;-) Gruß Peter

Antworten

Ja... leider hat meine Frau eine leichte Form von Asthma und hustet sich deshalb tlw. die Lunge aus dem Hals. Fieber zwischen 38,5 und 39,2 hatte sie auch.

Nene... will ich nicht :-)

Antworten

Moin, was nimmst du eigentlich bei Schränker2 für einen Antic-Modus? Antic 4 Charactergrafik? Und dann würde mich mal interessieren, wie du das scrolling realisiert hast. Kombination Fein-/Grobscroll? Vertikales Scrolling könnte man ja prima über DL verschieben realisieren, aber horinzontal?? Da geht doch sicherlich nur eine Kombination von Feinscroll und Grobscroll, wo ich den kompletten Bildschirm verschiebe - was erheblichen Rechenaufwand produziert. Oder Ist das schneller und einfacher mit einer entsprechenden Tabelle?? Ich frage, da ich ja überlege, ob ich CoE in Antic D Bitmap mache und dort dann Softwaresprites einsetze. Feinscroll müsste horizontal auch dort einfach gehen, aber einen 4k Bildschirm im Grobscroll zu schieben ist eine echte CPU-Belastung... Vielleicht sollte ich die Trauben nicht zu hoch hängen und lieber Antic 4 Textmodus verwenden... Bevor ich ins Programm einsteige muss ich das aber unbedingt entschieden haben, damit ich nicht wieder so rumeiere wie letztes Mal... Bin gerade echt unsicher! Liebe Grüße Peter

Antworten

Matrix!

So sieht ein Level bei mir aus. Ich bewege kein einziges Bit, sondern lasse die Displaylist über mein Level schweben. Das geht aber nicht bei einem Vertikalscroller.

          ;00000000001111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000100000000022222222
    ;01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567

DTA "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" ; 63
DTA "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" ; 62
DTA "DDDDDDbbbbbbc||                  abbbc    DDDDDI      abbbbbc           HDDDDDDDDDDDDDDDDDDDDDDDDDDDI                     HDDDDD" ; 61
DTA "DDDDDDbWXXYbbc|                   bbc     DDD/0     abbb]^bbbc              i                 HDDDDD                       HDDDD" ; 60
DTA "DDDDDDbZ||[bbc|                  abbc     DDD12     abbbyzbbb              jkl                 HDDD/0    wx                 HDDD" ; 59
DTA "DDDDDDbZ||[bbc|                  abc      DDD34       abbbbbc                                   DDD12    yz                  HDD" ; 58
DTA "DDDDDDDDDDDDDDDDEFFFFFFFFFFCDOJKPDDDI     HDDDDDDDDDDDDDDDDDDDDDDDEG!                           DDD34                         DD" ; 57
DTA "DDDDDDDDDI  i  HDDDDDDDDDDDDDQJKRDI                             HDDMEFFFFFFFFFFFFFFFFFFFFG!     DDDDDDDDDDDDDDEFFFG!          DD" ; 56
DTA "DDDDDDI    jkl                JKDD                                 HDDDDDDDDDDDDDDDDDDDDDMDDDOJKPDDDDDDDDDDDDDDDDDMDOJK       DD" ; 55
DTA "DDDDDD                        JKDD                                        bbbc         HDDDDDDJKDDDDDDDDDDDDDDDDDDDDDJK       DD" ; 54
DTA "DDDDDD                        JKDD                                      abbbb                 JK                 HDDDJK   HDDDDD" ; 53
DTA "DDDDDD                        JKDD       !ABCDDDDDDDDDDDDDDEFG!          abbbc                JK                  HDDJK    56DDD" ; 52
DTA "DDDDDDJKPDDDDDDDDDDDDDDDDDDDDDNNDOJKPDDDDDLDDDDDDDDDDDDDDDDDDMDDEFFFFG! abbbc                 JK                   DDJK    78DDD" ; 51
DTA "DDDDDDJKRDDDDDDDDDDDDDDDDDDDDDDI  JK     HDDDDI            HI  HDDDDDMDDDDDDDDEFFFFG!         JK                   DDJK    9:DDD" ; 50
DTA "DDDDDDJKDDDDDI abbbbbbbbbc        JK                            HDDDDDDDDDDDDDDDDDDMDDDDDDDDDDNNDDDDDDDDI    HDDDDDDOJKPDDDDDDDD" ; 49
DTA "DDDDDDJKDDD/0   abbbbbbbc         JK                  wx         DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDI               JK       DD" ; 48
DTA "DDDDDDJKDDD12    abbbbbbbc        JK                  yz         DDI   abbbbbc                                       JK    #$ DD" ; 47
DTA "DDDDDDJKDDD34   abbbbbbc          JK                             DD    abbbb]^c                                      JK    %& DD" ; 46
DTA "DDDDDDJKDDDDDDDDDDDDDDDDDDDDDDDDDDNNDDDEFFFFFFFFFFFCDDDDDOJKPDDDDDD     abbbyzbc                                     JK    '( DD" ; 45
DTA "DDDDDDJKDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDQJKRDDDDDD       abbbbc              !ABBBBBBCDDDDDDDDDDDDDDNNDDDDDDDDD" ; 44
DTA "DDDDDDJKDD                                     abbbc      JK   HDDDDDDDDDDDDDDDDDDDDDDDDI  HDDDLDDDDDDDDDDDDI         HDDDDDDDDD" ; 43
DTA "DDDDDDJKDD                                   abbbbc       JK    DDDDDI                            bbc                  STSTSTSDD" ; 42
DTA "DDDDDDJKDD mn                                 abbbbbc     JK    DDD/0                           abbb                   UVUVUVUDD" ; 41
DTA "DDDDDDJKDD op                                abbbbbbc     JK    DDD12                          abbbc                   STSTSTSDD" ; 40
DTA "DDDDDDJKDDDDDDDDDDDDDDDDDDDDDDOJKPDDDDDDDDDDDDDDDDDDDDDDDDNNDDDDDDD34                      !ABCDDDDDDDDDDDDDDDDDDDDDDDOUVUVUVUDD" ; 39
DTA "DDDDDDJKDDDDDDDDDDDDDDDDDDDDDDQJKRDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDI    HDDDDDDDDDDDLDDDDDDDDDDDDDDDDDDDDDDDMDQSTSTSTSDD" ; 38
DTA "DDDDDDJK                       JK         abbbbbbc                                                                     UVUVUVUDD" ; 37
DTA "DDDDDDJK                       JK        abbbbbbc                                             wx     wx                STSTSTSDD" ; 36
DTA "DDDDDDJK                       JK       abbbbbbbc                                             yz qrs yz                UVUVUVUDD" ; 35
DTA "DDDDDDJK                       JK       abbbbbbbc               !ABCDDDDDDDDDDDDDDDEFG!          tuv                   STSTSTSDD" ; 34
DTA "DDDDDDNNDDDDDDDDDDDDDDDDDDDDDDDNNDDDDDDDDDDDDDDDDDDDDOJKPDDDDDDDDLDDDDDDDDDDDDDDDDDDDMDDDDDDDDDDDDDDDDDDDDDDDOJKPDDDDDDNNNNNNNDD" ; 33
DTA "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDQJKRDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDQJKRDDDDDDDDDDDDDDD" ; 32
DTA "DDDDDDD/0|||e|STSTSTSTSTSTSTSTSTdf      i             JK      HDDDDDDDDI                              HDDDDI  JK          HDDDDD" ; 31
DTA "DDDDDDD12||||eUVUVUVUVUVUVUVUVUVh      jkl            JK       56DDDD/0                                       JK           DDDDD" ; 30
DTA "DDDDDDD34|||||STSTSTSTSTSTSTSTSTd                     JK       78DDDD12                                       JK           56DDD" ; 29
DTA "DDDDDDDDDDDDDOUVUVUVUVUVUVUVUVUVd                     JK       9:DDDD34                                       JK           78DDD" ; 28
DTA "DDDDDDDDDDDDDQSTSTSTSTSTSTSTSTSTd                !ABCDNNDDDDDDDDDDDDDDDOJKPDDDDDDDDDDDDDDDDDDDEFFFFG!         JK           9:DDD" ; 27
DTA "DDDDDDD/0|||||UVUVUVUVUVUVUVUVUVd             HDDDLDDDDDDDDDDDDDDDDDDDOQJKRDDDDDDDDDDDDDDDDDDDDDDDDMDDDDDDDDDDNNDDNNDDDDDDDDDDDD" ; 26
DTA "DDDDDDD12|||||STSTSTSTSTSTSTSTSTd                                       JK    abbbc   HDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" ; 25
DTA "DDDDDDD34||||fUVUVUVUVUVUVUVUVUVg                                       JK   abbbc                                            DD" ; 24
DTA "DDDDDDDDDDDDDDNNNNNNNNNNNNNNNNNNDDEFFFG!                                JK abbbbbc                                        #$  DD" ; 23
DTA "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDMDDDEFFFFG!                       JK   abbbbc                                       %&  DD" ; 22
DTA "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDMDEFFFFFG!               JK     abbbbc                                     '(  DD" ; 21
DTA "DDDDDDDI    abbbbbc                    HDDDDDDDDDDDDDDDMDDDDDDDDDDDDDDDDNNDDDDDDDDDDDDDDDDDDDDDDDDOJKPDDDDDDDDDDDDDDDDDDDDDDDDDD" ; 20
DTA "DDDDDDI    abbbbbc                             HDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDQJKRDDDDDDDDDDDDDDDDDDDDDDDDDD" ; 19
DTA "DDDDDD     abb]^bc   wx     wx                                   abbc                              JK                     HDDDDD" ; 18
DTA "DDDDDD     abbyzcqrs yz qrs yz                                 abbbbc                              JK                      56DDD" ; 17
DTA "DDDDDD     abbbc tuv    tuv                                   abbbbbbc                             JK                      78DDD" ; 16
DTA "DDDDDOJKPDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEFG!                    abbbbbbc                             JK                      9:DDD" ; 15
DTA "DDDDDQJKRDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDMDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDODI    HDDDDDDDDDDDDDEFG!  JK           !ABCDDDDDDDDDDDD" ; 14
DTA "DDDDDDJK         abbbbc           HDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDI        HDDDDDDDDDDDDDMDDDNNDDDDDDDDDDDDLDDDDDDDDDDDDDD" ; 13
DTA "DDDDDDJK        abbbbbc                                                                        HDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" ; 12
DTA "DDDDDDJK        abbbbc                                                                                       abbbc           HDD" ; 11
DTA "DDDDDDJK       abbbbc                                                                                      abbbbc             DD" ; 10
DTA "DDDDDDJK       abbbc                                                                                      abbbbc              DD" ; 09
DTA "DDDDDDNNDDDDDDDDDDDDDDDOJKPDDDDEFFFFFFFFFFFFFFFFFFFFFFFFFCDDDDDDDDDDDDDDOJKPDDDDDDDDDDDDEFG!             abbbbc               DD" ; 08
DTA "DDDDDDDDDDDDDDDDDDDDDDDQJKRDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDQJKRDDDDDDDDDDDDDDMDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDOJKPD" ; 07
DTA "DDDDDDbbbbbbbc          JKDDDDDDI               abbbbc                   JK     HDDDDDDDDDDDDDDDDDDDDDDDDDDI   i   HDDDDDDDDJKDD" ; 06
DTA "DDDDDDbbWXXYbc          JKDDI                    abbc                    JK            HDDDDDDDDI             jkl           JKDD" ; 05
DTA "DDDDDDbbZ\\[bc          JKDD )*                  abbc                    JK             56DDDD/0                            JKDD" ; 04
DTA "DDDDDDbbZ\\[bc          JKDD +,                 abbbbc                   JK             78DDDD12                            JKDD" ; 03
DTA "DDDDDDDDDDDDDDDDDDDDDDDDNNDD -.    !ABCDDDDDDDDDDDDDDDDDDDDDDDDEFG!      JK             9:DDDD34                            JKDD" ; 02
DTA "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDLDDDDDDDDDDDDDDDDDDDDDDDDDDDDMDDDDDDDNNDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDNNDD" ; 01
DTA "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" ; 00
Antworten

Wer sagt eigentlich, dass man nicht kombinieren darf?

Bei einem Vertikalscroller ist oben und unten meist eine Grafik und in der Mitte der Kampf. Nimm oben und unten Charaktergrafik, die Du dann scrollen kannst. In der Mitte nimmst Du Grafik "D" für die Softsprites. Ein paar Sterne kannst Du wie eigene Sprites durch die Mitte fliegen lassen. Ggf. sogar unterschiedlich schnell und hell? Das würde eine Tiefenwirkung erzeugen.

ODER

Wenn alles über Charaktergrafik laufen machst Du z.B. folgendes:

ABCD EFGH IJKL MNOP

Das sind die Zeichen für Dein Raumschiff. FGJK enthalten die Bitmap Deines Raumschiffes. Die anderen Zeichen sind fürs Scrolling. Du lässt also Dein Raumschiff nach links fliegen, werden die Zeichen so angepasst, dass es von JK langsam über IJK nach IJ fliegt. Angekommen ein Rest und es wird wieder auf JK dargestellt, aber dein gesamtes Set geht eins nach links. Hmm... hoffe ich konnte es etwas verständlich ausdrücken. Wenn man es optimiert benötigt man theoretisch auch nicht alle 16 Zeichen, sondern könnte es auf 4+2 begrenzen.

Antworten

Meine Matrix verbraucht 8 KB + 1 KB für den Zeichensatz. Deshalb will ich die Level nachladen.

Antworten

Ich habe in den letzten Tagen ein wenig gestöbert und bin schon echt erstaunt, was es alles gibt an Techniken - gerade auch hinsichtlich Softwaresprites, Multiplexing, fortgeschrittene DLI Programmierung usw..... irgendwann kommt man dann an so einen Punkt, wo man in den Garten geht und die leckeren Tomaten erntet... puhhh
Ich muss mich aber für etwas jetzt entscheiden, was ich im Moment auch programmiertechnisch gut beherrschen kann, ohne den Überblick zu verlieren... hätte nicht gedacht, daß der Atari so komplex ist!! Ich hatte mir in der Tat auch schon mal überlegt, ob ich - wie du vorschlägst - das einfach kombiniere: Oben einen Part Charaktergrafik, unten auch - diese beiden Parts werden wie gewohnt gescrollt (Feinscroll/Grobscroll). Ganz unten für die normale Anzeige eine Textgrafik mit DLI, der auf den normalen Charakterset umschaltet (dann muss ich keine eigenen Charakter dafür definieren). In der Mitte dann z.B. Antic D wo das Raumschiff "kämpft" - vielleicht sogar das Raumschiff als P/M mehrfarbig. Die Gegner als Softwaresprites und die Landschaft in der Mitte (Kampfzone) auch quasi als Softwaresprites, die aber einfach horizontal durchscrollen... Hälst du diesen Aufbau für sinnvoll und machbar??

Antworten

puhh 8kB ... ne Menge Holz!! Ich möchte ja dieses Mal meine Landschaft aus definierten Objekten per Zufall generieren... spart enorm Speicher!

Antworten

Ich habe mir gestern mal etas länger auf youtube Zybex angeschaut, ich glaube die haben das dort ähnlich gelöst....

Antworten

... Das Problem bei so einer Matrix ist halt der für einen Atari ungeheure Speicheraufwand. Du stellst natürlich insgesamt etwa 9 Bildschirme dar und das scrollen funktioniert extrem leicht und schnell. Füreinen Scrollshooter geht das leider so nicht... aber ein Level orientiertes Jump´nRun Spiel kann ja problemlos die Level nachladen. In diesem Fall hat es echte Vorteile, da man auch die Level relativ schnell und einfach erstellen kann... bei meinem Jump´nRun würde ich es wohl ähnlich konzipieren... Ich hatte auch schon mal über eine Matrix erzeugende Matrix nachgedacht....

Du hast in deiner 8k-Matrix ja ne Menge Informationen, die redundant sind. Stell dir nun mal einen 8k-Matrix Bereich vor, den du natürlich reservierst und dann sagen wir mal 4 oder 5 weitere Matrix mit vielleicht je nur 1k, die mit einer intelligenten Systematik die 8k vollschreiben.... da würdest du vielleicht 8-10 Level in 18k unterbringen können. Der Restspeicher müsste für Coding und Sound ausreichen... nur so eine Idee...

Antworten

Ich habe es gerade mal überschlagen, ganz einfach komprimiert komme ich ganz schnell auf knapp 2,5 k für deine Matrix... wenn man bissle rumfummelt bekommt man das bestimmt auf unter 2k...

Antworten

deutlich besser 💪 übrigens habe ich gestern eine erste wav von Thomas Allen bekommen…. er muss da noch etwas nacharbeiten 😂

Antworten

... danke für den Link!! Interessantes Tool. Btw. Tool... mit was erstellst du eigentlich deine schönen Grafiken, Sprites usw.?? Also ich habe da den Sprite-Editor in 2 Versionen und das Madstudio.... beide habe ich allerdings nicht für BoE eingesetzt... da habe ich alles per Hand und Papier aufgemalt und dann händisch umgesetzt...

Antworten

Hallo, wie arbeitet das Tool? Komprimiert es ein xex File oder nur Teile des Programmes?

Antworten

das heißt du bindest den relativ kurzen Decompressor-Code in dein Assemblerprogramm ein und der dekomprimiert dann entsprechend on the fly die komprimierte Datei...

Antworten

... habe jetzt 2 Vorschläge für den neuen Sound von Thomas Allen bekommen als wav-Datei Den ersten fand ich nicht schlecht, passt aber nicht ganz so wie ich es mir für CoE vorgestellt hatte, der zweite kam heute und trifft voll meinen Nerv... die zweite Version wird er noch ein wenig ausbauen... willst du mal reinhören??

Antworten

Hi Janko,

hier schon mal eine etwas überarbeitete Version des Scriptes...:

      ;----- Softwaresprite Antic D ---------

delay = 245 rtclok = 18 vcount = 54283 random = 53770 screen = 4096 plx = 240 ; byte position of player ply = 241 ; line of player position shifted = 242 ; position of player inside "byte" dx = 243 dy = 244 tmp = 8224 ; area for background storing

  org $600

dlist ;ANTIC D - 160x96 2 Scanlines, 4 Farben :3 .by 112 .by 77 .wo screen :99 .by 13 .by 65 .wo dlist

  .proc main

  mwa #dlist 560  ; gr. mod 160x100,4 colors

  jsr fillscr

  lda #0
  sta plx
  sta ply
  sta shifted
  sta dx
  sta dy
  mva #34 709

loop jsr draw_sprite mva #2 delay jsr wait

  jsr restorehaupt
  lda #136                ; some bacground color changes too measure time for erasing (white) and drwaing (blue) sprite
  sta vcount        
  ldx shifted
  cpx #3
  bne @+
  inc plx
  ldx #255

@ inx stx shifted ldx plx cpx #40 bne @+ ldx #0 stx plx @ ldx ply lda dy bne @+ inx inx @ dex bne @+ dec dy @ cpx #88 bne @+ inc dy @ stx ply jmp loop

  .end

;------------------ Subroutinen ------------------------------

  .proc drawalles

  ldy #0
  jsr draw
  iny
  jsr draw
  iny
  jsr draw
  iny
  jsr draw
  ldy #40
  jsr draw
  iny
  jsr draw
  iny
  jsr draw
  iny
  jsr draw
  ldy #80
  jsr draw
  iny
  jsr draw
  iny
  jsr draw
  iny
  jsr draw
  ldy #120
  jsr draw
  iny
  jsr draw
  iny
  jsr draw
  iny
  jsr draw
  ldy #160
  jsr draw
  iny
  jsr draw
  iny
  jsr draw
  iny
  jsr draw
  ldy #200
  jsr draw
  iny
  jsr draw
  iny
  jsr draw
  iny
  jsr draw

  rts
  .endp
  .proc restorealles
  ldy #0
  jsr restore
  iny
  jsr restore
  iny
  jsr restore
  iny
  jsr restore
  ldy #40
      jsr restore
  iny
  jsr restore
  iny
  jsr restore
  iny
  jsr restore
  ldy #80
  jsr restore
  iny
  jsr restore
  iny
  jsr restore
  iny
  jsr restore
  ldy #120
  jsr restore
  iny
  jsr restore
  iny
  jsr restore
  iny
  jsr restore
  ldy #160
  jsr restore
  iny
  jsr restore
  iny
  jsr restore
  iny
  jsr restore
  ldy #200
  jsr restore
  iny
  jsr restore
  iny
  jsr restore
  iny
  jsr restore
  rts
  .endp 
  .proc draw

  lda (254),y
  sta (248),y
  and (250),y
  ora (252),y
  sta (254),y
  rts
  .endp
  .proc restore

  lda (248),y
  sta (254),y
  rts
  .endp
  .proc fillscr   ;254/255 0-Page-Variablen für Screen

  mwa #screen 254
  ldx #16

fill2 ldy #0 fill lda random sta (254),y iny bne fill inc 255 dex bne fill2 rts

  .endp
  .proc wait
  clc
  ldx delay    ; Warteschleife

st
lda RTCLOK+2

wa
cmp RTCLOK+2 beq wa dex
bpl st rts .endp .proc draw_sprite ldx ply clc lda tabley_lo,x adc plx sta 254 lda tabley_hi,x adc #0 sta 255 ldx shifted lda sprite_data_lo,x sta 252 lda sprite_data_hi,x sta 253 lda mask_data_lo,x sta 250 lda mask_data_hi,x sta 251 mwa #tmp 248

  jsr drawalles

  clc
  lda 250
  adc #240
  sta 250
  bcc @+
  inc 251

@ clc lda 252 adc #240 sta 252 bcc @+ inc $fd @ clc lda 254 adc #240 sta 254 bcc @+ inc 255 @ clc lda 248 adc #240 sta 248 bcc @+ inc 249

@
jsr drawalles rts .endp .proc restorehaupt ldx ply clc lda tabley_lo,x adc plx sta 254 lda tabley_hi,x adc #0 sta 255 mwa #tmp 248 jsr restorealles clc lda 254 adc #240 sta 254 bcc @+ inc 255 @ clc lda 248 adc #240 sta 248 bcc @+ inc $f9 @ jsr restorealles rts .endp

  org 3584

tabley_lo :100 dta l(4096+40*#)

tabley_hi :100 dta h(4096+40*#)

  org 3968

sprite_data_lo :4 dta l(8192+8*#)

sprite_data_hi :4 dta h(8192+8*#)

mask_data_lo :4 dta l(8196+8*#)

mask_data_hi :4 dta h(8196+8*#)

  org 8192

sprite dta 255,255,255,0 dta 0,0,0,255 dta 63,255,255,192 dta 192,0,0,63 dta 15,255,255,240 dta 240,0,0,15 dta 3,255,255,252 dta 252,0,0,3

      org 8192+40
    dta 255,255,255,0
    dta 0,0,0,255
    dta 63,255,255,192
    dta 192,0,0,63
    dta 15,255,255,240
    dta 240,0,0,15
    dta 3,255,255,252
    dta 252,0,0,3

      org 8192+80
    dta 255,255,255,0
    dta 0,0,0,255
    dta 63,255,255,192
    dta 192,0,0,63
    dta 15,255,255,240
    dta 240,0,0,15
    dta 3,255,255,252
    dta 252,0,0,3

  org 8192+120
      dta 255,0,255,0
      dta 0,255,0,255
      dta 63,192,63,192
      dta 192,63,192,63
      dta 15,240,15,240
      dta 240,15,240,15
      dta 3,252,3,252
      dta 252,3,252,3

  org 8192+160
    dta 255,0,255,0
    dta 0,255,0,255
    dta 63,192,63,192
    dta 192,63,192,63
    dta 15,240,15,240
    dta 240,15,240,15
    dta 3,252,3,252
    dta 252,3,252,3

  org 8192+200
    dta 255,0,255,0
    dta 0,255,0,255
    dta 63,192,63,192
    dta 192,63,192,63
    dta 15,240,15,240
    dta 240,15,240,15
    dta 3,252,3,252
    dta 252,3,252,3

  org 8192+240
    dta 255,0,255,0
    dta 0,255,0,255
    dta 63,192,63,192
    dta 192,63,192,63
    dta 15,240,15,240
    dta 240,15,240,15
    dta 3,252,3,252
    dta 252,3,252,3

  org 8192+280
    dta 255,0,255,0
    dta 0,255,0,255
    dta 63,192,63,192
    dta 192,63,192,63
    dta 15,240,15,240
    dta 240,15,240,15
    dta 3,252,3,252
    dta 252,3,252,3

  org 8192+320
  dta 255,0,255,0
  dta 0,255,0,255
  dta 63,192,63,192
  dta 192,63,192,63
  dta 15,240,15,240
  dta 240,15,240,15
  dta 3,252,3,252
  dta 252,3,252,3

  org 8192+360
    dta 255,255,255,0
    dta 0,0,0,255
    dta 63,255,255,192
    dta 192,0,0,63
    dta 15,255,255,240
    dta 240,0,0,15
    dta 3,255,255,252
    dta 252,0,0,3

  org 8192+400
    dta 255,255,255,0
    dta 0,0,0,255
    dta 63,255,255,192
    dta 192,0,0,63
    dta 15,255,255,240
    dta 240,0,0,15
    dta 3,255,255,252
    dta 252,0,0,3

  org 8192+440
    dta 255,255,255,0
    dta 0,0,0,255
    dta 63,255,255,192
    dta 192,0,0,63
    dta 15,255,255,240
    dta 240,0,0,15
    dta 3,255,255,252
    dta 252,0,0,3


  run main

wichtig ist hinten die Definition des Sprite und der Maske. Pro Sprite-Zeile habe ich 8 dta Anweisungen. Jeweils die Definition der Zeile (zB 255,255,255,0) die nächste Zeile (0,0,0,255) ist dann die invertierte Maske. Und dann kommt jeweils ein shift nach rechts incl. Maske dann...

Antworten

Hallo mein Freund... so viele Leute mit genau den Fragen, die ich letztes Jahr auch hatte...
zu schade, daß du nicht zur Fuji kommst, da könnten wir uns prima austauschen... ich weiß ja um deine Bedenken, aber für mich persönlich zählt nur dein Kopf und deine Freundlichkeit und nicht dein Gewicht! Leider kann ich dich nicht mit einem kühlen gemeinsamen Bier locken ;-) Lieben Gruß Peter

Antworten

Hi Janko, gestern musste ich echt viel arbeiten (bin 2 Uhr) - Dienst. Heute hatte ich Tennis und gerade habe ich meinen Sohn aus Münster abgeholt... bin echt platt! Jetzt gleich was essen gehen und heute Abend werde ich dann weiter testen! Cool wenn du das noch bis zum 31.7. schaffst!!

Das mit der Pause hatte ich ja auch und jetzt schaue ich erstmal - quasi als Vorarbeiten - daß ich mich in den Themen Parallax und Softwaresprites firm mache... und dann baue ich so langsam das Spiel auf!

Melde mich wenn ich dann später teste!! Gruß Peter

Antworten

Guten Morgen Janko, habe mich gestern noch weiter mit der Parallax beschäftigt. Das Feinscroll mit den DLI auseinanderzureissen und in unterschiedlicher Gewchwindigkeit laufen zu lassen bekomme ich ganz gut hin. Jetzt geht es darum, das Grobscroll reinzubringen. Mein erster einfacher Ansatz den jeweiligen Bloch um eins nach links zu schieben geht, bei Antic D ist das natürlich schon ne Menge Rechenarbeit, was der DLI nicht packt, dazu braucht man den VBI... alles echt schwierig flimmerfrei zu timen. Es geht gut wohl nur mit Displaylist-shiften.... das muss ich mir jetzt mal genauer anschauen. Du hattest das ja schon vor einigen Monaten für Vertikalscroll realisiert, das wird ähnlich mit Horizontalscroll zu machen sein... Gruß Peter

Antworten

bei PlayerMissile.com wird die Technik meines Erachtens erfolgreich genutzt!! Bin nur noch nicht komplett durchgedrungen...

Antworten

rein von der Theorie könnte ich es mir so vorstellen: Jede Displaylistzeile bekommt wieder eine eigene Adresse mit Sprungbefehl. Dann wird jede Zeile um einen Wert verringert / vergrößert - je nach Richtung. Der Wert am Rand, der rausfällt wird gelöscht und ein neuer Wert auf der anderen Seite des Randes kommt rein. Im unsichtbaren Bereich (unten) wird eine komplette Zeile in den unsichtbare Bereich (oben) geschoben. KA ob das funktioniert....

Antworten

... das Beispiel scheint zu funktionieren, aber ich finde das recht kompliziert. Das versuche ich mal selber herzuleiten... vielleicht hast du ja auch noch eigene Ideen... wenn du Bock darauf hast!

Ich könnte mir vorstellen, daß man tatsächlich dann alle 40 Zyklen (eine komplette Zeile decrementiert) einmal den kompletten Bildschirmblock verschieben muss... dann die Displaylistmanipulation wie beim vertikal Scroll und dann wieder 40 Einzelschritte der jeweiligen Zeile.

Die kompletten 4 kb zu bewegen alle 40 Einzelscrollzyklen ist machbar... geht vielleicht aber noch intligenter...

Antworten

... wenn es dir wieder besser geht .... :

org $1000

  icl '../hardware.txt'

delay = 240 var1 = 241

  .proc main

  mwa #dlist1 560

loop lda #33 sta 39976+79 ldx #80

@ txa sta dlist1+10 sta var1

  mva #3 delay
  jsr wartes
  ldx var1
  clc
  inx
  cpx #120
  bne @-

  lda #80
  sta dlist1+10

  jmp loop



  .endp

;---------- Subroutinen ---------

  .proc dlist1

dlist .by 117,117,117 .by 66,0,156 ; 39976 .by 66,40,156 .by 66,80,156 .by 66,120,156 .by 66,160,156
.by 66,200,156 .by 66,0,157 .by 66,40,157 .by 66,80,157 .by 66,120,157 .by 66,160,157
.by 66,200,157 .by 66,0,158 .by 66,40,158 .by 66,80,158 .by 66,120,158 .by 66,160,158
.by 66,200,158 .by 66,0,159 .by 66,40,159 .by 66,80,159 .by 66,120,159 .by 66,160,159
.by 66,200,159 .by 65 .wo dlist

  rts

  .endp

  .proc wartes
    clc
      ldx delay ; Warteschleife

st
lda RTCLOK+2

wa
cmp RTCLOK+2 beq wa dex
bpl st rts .endp

  run main

funktioniert!!

Antworten

... hier nochmal etwas angepasst - er scrollt jetzt von rechts nach links, nach jedem Grobscroll soll ein neues Zeichen (Random) geprintet werden und dann entsprechend weitergescrollt werden. Das Ganze läuft in dieser Demo als Unendlichschleife und mit einer Verzögerung, damit man es erkennen kann. Der Code ist echt schlank - die Schleife läuft jetzt 40x durch und startet dann wieder (40 pro Zeile). Wenn ich also nun einen Grobscroll über Antic D machen möchte (100 Zeilen), dann muss ich das also pro Grobscroll 100x machen und hätte damit den gesamten 4k Schirm um 1 nach Links geschoben... das ist machbar!

org $1000


  icl '../hardware.txt'

delay = 240 var1 = 241

  .proc main

  mwa #dlist1 560

loop lda random sta 39976+79

  ldx #80

@ txa sta dlist1+10 sta var1 lda random sta 39976,x sta 39976,x-40 mva #4 delay jsr wartes ldx var1 clc inx cpx #120 bne @-

  lda #80
  sta dlist1+10



  jmp loop



  .endp

;---------- Subroutinen ---------

  .proc dlist1

dlist .by 117,117,117 .by 66,0,156 ; 39976 .by 66,40,156 .by 66,80,156 .by 66,160,156 .by 66,200,156
.by 66,240,156 .by 66,0,157 .by 66,40,157 .by 66,80,157 .by 66,120,157 .by 66,160,157
.by 66,200,157 .by 66,0,158 .by 66,40,158 .by 66,80,158 .by 66,120,158 .by 66,160,158
.by 66,200,158 .by 66,0,159 .by 66,40,159 .by 66,80,159 .by 66,120,159 .by 66,160,159
.by 66,200,159 .by 65 .wo dlist

  rts

  .endp

  .proc wartes
    clc
      ldx delay ; Warteschleife

st
lda RTCLOK+2

wa
cmp RTCLOK+2 beq wa dex
bpl st rts .endp

  run main
Antworten

... schau mal drüber wo der Haken ist ... aber erst, wenn es dir wieder gut geht!!! Gruß Peter

Antworten

Hallo Janko, werde mich später gleich drüber her machen... LG Peter

Antworten

... die Jungs haben es einfach besser drauf, als wir alten Säcke und spielen das locker durch...

Antworten

Hallo Janko, habe gestern mit Thomas kommuniziert... er will die MIDI-Files bald fertig machen... Wir haben hier auch einige Coronafälle und arbeite mich gerade schwindelig. Kaum Zeit zum programmieren. Jetzt habe ich zwei relativ komplizierte Codes - der mit dem Feinscroll + DLI und der mit dem komplexen Grobscroll via DL-Modifikation... das muss ich jetzt zusammenbringen und da brauche ich etwas Zeit am Stück!! Daran hapert es im Moment. Hoffe, dass ich das mal in den nächsten Tagen fertig mache kann, damit ich mich dann weiter um die Softwaresprites dran machen kann. Und von Holger hört man irgendwie auch nichts....
Gruß Peter

Antworten

hmmm - interessant, du willst ja die Fujinet programmieren und also müssen wir das Ding an den Rechner hardwaremäßig anschließen und dann mit Altirra ... bzw. Mac800 (wenn das auch geht)verbinden... korrekt?

Antworten

aber so einfach ist das zumindest bei mir hier gar nicht... ich bekomme immer einen unexpectedd error, could not open port...

Antworten

... irgendwie kommt Thomas nicht in die Puschen gerade...wie gehts dir?

Antworten

Hi Janko, schön, daß es dir wieder gut geht und ja, Terassien mit mal nichts tun müssen (Thema Entschleunigung) ist auch gut, um die Energiedepots wieder aufzuladen. Bei uns in der Praxis sind zwei Kollegen nun auch an Corona erkrankt und danach im Urlaub... das bedeutet für mich deutlich mehr Arbeit, Dienste usw..... daher komme ich gerade zu fast nichts. Dabei habe ich so viele Ideen und so richtig Lust weiterzumachen. Am Sonntag werde ich neben Dienst ein wenig Programmierzeit haben und nächstes WE habe ich richtig Zeit. Da möchte ich dann das ganze Thema Parallax und Softwaresprites "im Sack" haben, um dann damit das neue Spiel aufzusetzen...

Ich hoffe, daß Thomas mit den Musikstücken bald mal fertig wird, der hat aber auch gerade viel um die Ohren und nun ist auch noch ein Teil seiner Anlage abgeraucht... sobald was kommt, sende ich es dir und hoffe natürlich auf deine Hilfe bei der Konvertierung (die nicht einfach wird). Heute habe ich wieder Dienst die ganze Nacht durch - zum Glück kann ich von zuhause arbeiten - und muss gleich einen Notfall befunden. Liebe Grüße Peter

Antworten

Guten Morgen Janko, im Moment komme ich nicht viel zum programmieren - die Hitze, Urlaub und Krankenstand in der Firma etc. - immer hin habe ich jetzt mein Parallax fertig entwickelt und mache mich jetzt an die Softwaresprites dran. Das verbinde ich gleich mit dem Parallax, da ich das in meinem Programm so einbauen möchte... Endlich hat auch Thomas das 2. Musikstück fertig bekommen - er soll am Ende noch etwas umändern und dann will er mir heute von beiden Stücken alle Fies rübersenden. 2:40 hat das 2. Stück ... shit, das wird teuer!! Ich sende dir gleich mal die mp3 Datei, dann kannst du schon mal reinhören... Gruß Peter

Antworten

Hammer... Janko, du bist echt gut!! Das läuft schon richtig gut... das hätte ich nicht gedacht, daß du das so schnell hinbekommst... ok die Effekte sind dann. noch das Sahnehäubchen.

Den anderen Track sende ich dir morgen. Du kannst ihn sehr gerne mitbenutzen - ich weiß du magst den lieber! Wir teilen und den einfach... wäre das ok für dich??

LG Peter

Antworten

Guten Morgen Janko, super umgesetzt! Vielen Dank dafür. Du bist echt fit...! Und verrückt (genau wie ich) - 2 Uhr nachts ;-)) Bei den Temperaturen und alle schlafen kann man allerdings um die Zeit am besten arbeiten. Ich sende dir gleich mal den anderen Track... denke der ist noch kniffliger. Aber erstmal ausschlafe... hat ja Zeit! Liebe Grüße Peter

Antworten

Hi Janko, unglaublich wie gut und schnell du beide Tracks umgesetzt hast!! Respekt!! Echt super Ergebnis, finde ich. Vor allem die Effekte waren diesmal nicht so einfach, denke ich!

Bis Freitag heißt es für mich noch viel Arbeit... wenig Zeit zum programmieren. Ab Fr - So werde ich aber ein wenig Zeit haben, da meine Frau übers WE unterwegs ist und ich nur mich und die beiden Hunde versorgen muss... ;-)

Da werde ich sehr intensiv an den Softwaresprites rumwerkeln. Die Ideen und Fortschritte werde ich im Forum stellen und diskutieren - auf deine Beteiligung und deine kreativen Ideen dazu würde ich mich sehr freuen, da ich deine Programmierfertigkeit als sehr hochwertig einschätze... natürlich nur wenn du Zeit und Lust dazu hast !!

Liebe Grüße und vielen Dank für die Umsetzung der Tracks!!

Peter

Antworten

Hallo Janko, mal ganz abgesehen von einer positiven Antwort von CharlieChaplin solltest du dir überlegen, ob du nicht ganz generell hier im Forum ein neues Thema aufmachst - und zwar von deiner Engine.

Du solltest sicherlich darauf hinweisen, daß du die Engine aus den Ideen und Ansätzen von Peter Finzel entwickelt hast, aber letztlich hast du sie stark weiterentwickelt und dein eigenes Ding daraus gemacht....

Das Besondere ist sicherlich, daß du eine Möglichkeit gefunden hast, simple Midi-Files zu konvertieren und somit in den Atari abspielbar einzubinden. Demostücke... ich habe 4 und du hast bislang 2. Als Demo taugen die allesamt. Am stärksten finde ich fast sogar die von dir konvertierte Tocata!!

Ansonsten einfach Thomas anschreiben - grüß ihn von mir und genau erklären was du haben möchtest. Ich kann das auch für dich machen, theoretisch kannst du auch meinen neuen Track 1 nehmen... der klingt doch recht fröhlich.

Liebe Grüße Peter

Antworten

... hmm bin die ganze Zeit am grübeln... also Engine finde ich gut im Namen, denn das beschreibt ja was es machen soll. Und Musik wäre auch als Zusatz irgendwie passend... Hexen passt so gar nicht... du willst den Bezug zur Hexenküche reinnehmen, aber irgendwie passt es nicht so gut. Gibt es einen anderen Bezug? Oder was ganz anderes... : JankosSoundstudio oder GreweEngine

Soso Track1 gefällt dir so gut... und ich weiß gar nicht so ganz genau, wo ich den Track 1 hinpacken soll. Mein nächstes Programm wird auf jeden Fall Track 2 beinhalten - ob bei 3:20 überhaupt noch mehr reingeht ist unwahrscheinlich und wenn, dann nehme ich den ersten Track von Thomas, der jetzt als Intro in BoE spielt... Im September werde ich Thomas nach einem neuen Stück fragen... ich will sammeln, solange der Kontakt gut funktioniert. Du hast mir bei der Musik echt enorm geholfen (und bei vielen anderen Dingen auch) - lass mich bitte dir diesen Track schenken! Ach Quatsch.. ich frage dich gar nicht, ich schenke dir hiermit Track 1 !!

Liebe Grüße Peter

Antworten

... ich sehe das echt pragmatisch: Ich habe einen geilen Track von 3:20 für 98 Euro bekommen... der andere (Track 1) war on Top... also quasi kostenneutral. Aber ok - wir machen es so: Uns beiden gehört der Track und wir können damit machen was wir wollen! Nimm ihn ruhig für die Engine oder auch für ein neues Programm... we will see - ich bin da echt tiefenentspannt.

Zum Namen: Google doch mal im Netz - da gibt es viele schöne Namen von Hexen... vielleicht nimmst du einen Namen und kombinierst den dann mit "MusicEngine". Gruß Peter

Antworten

Guten Morgen Janko, Thema Engine: Es ist natürlich eine Frage, was man will für sich und andere. Natürlich läuft die Engine gut und erfüllt genau das was sie soll. Musik abspielen. Das kannst du gut auch im ABBUC präsentieren und dabei sagen, daß du 80% Code aus der Hexenküche hast... die Leute werden dich loben und sich dann fragen wie sie es selber nutzen können. Das Problem ist ja primär gar nicht die Engine, sondern die Musik. Und glaub mir, die allermeisten sind keine Musiker, die ein schönes Stück kreieren können. Selbst mit dem RMT hätte ich da echte Probleme, obwohl ich mich als musikalisch einschätzen würde.... das geniale an deiner Lösung ist doch die Kombination: Ein vorhandenes MIDI-File konvertieren zu Atari-Musik-Daten, in die Engine einbinden und die passenden Hüllkurven bereitstellen oder anpassen. Du machst das jetzt für dich und mich und das klappt wirklich super - das ist deine eigentliche Leistung: Das Ganze!! Wenn du der "Gemeinde" sagst: Ich habe hier ein Tool mit dem man fast jede x-beliebige MIDI-Datei im Atari abspielen kann, dann ist das ein MEGA-Wow. Das gibt es so noch nicht und wäre ein absoluter Megaklopper...ich garantiere dir, beim nächsten ABBUC-Wettbewerb geht so etwas direkt auf 1 !!! Du hast mit deinem Wissen und deinen Tools die Tracks von Thomas innerhalb weniger Stunden umgesetzt. Wenn du irgendwann dich vom Atari zurückziehst warum auch immer, dann würde ich für die Umsetzung der Musik Wochen brauchen weil ich alles per Hand machen müsste.... andere würden das gar nicht schaffen.

Also: Du hast da ein absolut außergewöhnliches Konstrukt geschaffen, Janko, und das solltest du echt allen zugänglich machen (wenn du das willst natürlich nur). Und dann ist das auch deins und nicht Peter Finzels Produkt....

Was würde ich mir von so einem Tool wünschen: Zunächst eine einfache und dauerhaft Möglichkeit MIDIS vom PC in den Atari zu bekommen. Könnte das sogar ein Atari-Programm machen? Also dein Tool liest direkt im Emulator oder Atari das Midi-File und konvertiert das dann direkt. Also ohne Umweg deiner Pearl-Programme. Das wäre der Knaller!! Das geht bestimmt... Dann sollte das Tool verschiedene Hüllkurven anbieten, die man dann für eine jeweilige Stimme ausprobieren und anpassen kann.

Vielleicht baut man später eine Option für Stereo mit ein. Kanal 4 sollte unbedingt für Soundeffekte genutzt werden können, damit man in einem Spiel nicht noch was zusätzliches braucht (das war übrigens ein großes Problem für mich). Am besten liefert. man noch die wichtigsten Soundeffekte mit.

Am Ende dann die Option aus dem Tool eine schlanke Engine zu generieren, die nur die Musik abspielt (so wir wir es ja jetzt haben ohne Textausgabe).

Das könnte ein Projekt von mehreren Jahren sein, aber eigentlich unverzichtbar !! Die Polen haben ein paar gute Leute, die den RMT sehr gut nutzen können und machen damit ihre Musik. Mit deinem Tool kann man aber viel mehr... das würde voll einschlagen - übrigens sicher auch in den USA bei Atari Age. Am Ende gibt es sicherlich auch gute Ideen, wie man das Fujinet mit deinem Tool verbinden kann... da fielen mir gleich einige interessante Optionen ein ;-)

Wie gesagt: Das könntest du alles erschaffen, musst es aber natürlich nicht! Btw. für so ein geiles Tool kann man auch Geld nehmen. Und falls du Hilfe brauchst biete ich mich natürlich gerne an!!!!

Liebe Grüße Peter

Antworten

Hallo Janko, wenn das Programm wirklich direkt Midi´s lesen und konvertieren könnte wäre das wohl der absolute Hauptgewinn - am besten über Fujinet auch noch ;-) Rechenzeit - egal. Deine Engine hat dann einen Programmteil, der das macht. Wenn alles fertig ist, dann wird eine .asm erstellt, wo dann eine schlanke Engine die Musik abspielt ....

Die rechtlichen Fragen kann man klären. Finzel hat ja nichts neu erfunden. Wenn du dein Programm so stark erweiterst, dann hat es letztlich mit der Vorlage nicht mehr viel zu tun.. Gruß Peter

Antworten

... man muss nur mal motzen und schon geht es.... Prüfung der Programme abgeschlossen. Zur Belohnung werde ich bestimmt auf dem letzten Platz landen ;-)

Antworten

Guten Morgen Janko, die energetische und esoterische Welt regelt manche Dinge selber... die Nachricht an Holger ging wohl nicht raus. Es mag an einer vergessenen Betreffzeile gelegen haben - jedenfalls bin ich jetzt doch ganz froh, daß die Nachricht doch nicht rausgegangen ist. Daher kam auch keine Reaktion von Holger. Umso erstaunlicher, daß jetzt die Prüfungen fast alle durch sind... die Welt ist schon seltsam manchmal ;-) Gruß Peter

Antworten

Hi Janko, du kannst dir ja nochmal alles in Ruhe überlegen, ich will dich da auf keinen Fall irgendwie zu irgendetwas drängen. Für uns läuft die Lucy-Engine und wir können ja auch nicht die ganze Welt retten ;-) Ich werde mich jetzt weiter auf die Sprites konzentrieren - da ist noch einiges zu tun! Die flüssige Bewegung nach links muss noch rein, auch die Bewegung nach oben und unten ist noch nicht korrekt... auch der Code ist mir noch zu träge und umständlich programmiert. Und dann will ich noch die "Fusion" mit dem Hintergrund reinbringen mit der Kombination AND und EOR. Wenn das läuft, werde ich das mit meinem Parallax kombinieren und dann kann ich CavernsOfEris beginnen. Viel Arbeit - wenig Zeit... Grüße Peter

Antworten

puh.... fandal & Co also dieses Jahr ist die Konkurrenz richtig groß...

Antworten

Hallo, ja mal abwarten... Fandal ist Tscheche glaube ich.. ach ist ja egal, aber was die Polen und Tschechen da so programmieren ist echt gut - die können was. Bei 14 Programmen rutsche ich bestimmt aus den ersten 10 raus.. naja, ich wollte es für mich programmieren - zum lernen! Mit dem Parallax und jetzt mit den Softwaresprites bin ich auf recht komplexes Gebiet getroffen... einen Sprite jetzt darzustellen klappt und ich habe es verstanden und durchdrungen. Der ist aber zu klein und ich möchte 12 kleine Einheiten zu einem Sprite zusammenbinden. Das wird recht komplex... am liebsten würde ich es so machen, daß das in einer Subroutine läuft, wo ich dann diesen 12 er Sprite aufrufen und auch animieren kann.. und davon soll es mindestens 5-6 Stück geben. Da bin ich jetzt gerade dran. Bin mir auch echt unsicher, ob ich das alles posten soll... so ganz ohne Feedback weiß ich gar nicht, ob das überhaupt interessiert... für die einen ist es vielleicht zu komplex und die anderen sich evt. gelangweilt... keine Ahnung. Mal sehen ... Gruß Peter

P.s. Mit der Musikengine ... wahrscheinlich hast du Recht und man macht noch ein paar kleinere Verbesserungen, läßt aber das andere so und macht nicht irgendetwas, was keiner braucht und was vielleicht auch gar nicht gut funktioniert. Da war ich vielleicht zu euphorisch...

Antworten

Hey Janko, die Idee mit der Trennung der Engine / bzw. Demo von den Daten finde ich gut. Fast könnte man sogar noch die Tonlängendefinitionen in die Engine / Demo packen. Das fände ich irgendwie "sauberer". Die Erklärung zu dem Programm wird in der Tat nicht so einfach ;-)
Ansonsten kannst du dich ja später um alles andere noch kümmern - also wie erzeuge ich die Daten aus der Midi. Letztlich hast du ja schon die Lösung und darauf kann man zugreifen. Man muss eh erstmal sehen, wie das Programm überhaupt ankommt... wenn sich dafür nur 2 oder 3 Leute mäßig interessieren, dann muss man auch keinen extremen Aufwand erzeugen.

Ich glaube was wirklich noch sehr hilfreich wäre, sind unterschiedliche vorinstallierte Hüllkurven und Effektklänge. Wenn man dann in der Demo damit rumspielen könnte / bzw. einfach die nötigen Hüllkurven für die Musik auswählen könnte - dazu noch die ganzen Effekte die man so einsetzen möchte, wäre das schon richtig gut... Da kann man noch ne Menge entwickeln... Gruß Peter

P.s. Ich werde jetzt die Softwaresprites so weiterentwickeln, daß man die tatsächlich "gekapselt" in einem Programm einsetzen kann. Ich baue jetzt also gerade ein großen Sprite (besteht aus 6 kleinen) und der hat seine Maske, seine Daten, die y- und x-Position und kann dann separat aufgerufen und bewegt werden. Später soll der noch animiert werden... diese Sprites wird man dann beliebig vervielfältigen können - mal sehen was die CPU packt...

Antworten

... bist du am Code interessiert?? Habe jetzt 2-3 Wochen sehr intensiv dran gearbeitet und läuft echt gut.

Gruß Peter

Antworten

... du hast Post! Ja das Problem mit der Zeit kenne ich... Frau, Kinder, Hunde, Garten, Job, all das reduziert meine Zeit fürs programmieren. Also macht man es mal auf der Arbeit nebenbei, zuhause wenn keiner da ist, spät wenn alle schlafen oder früh... heute bin ich um 5.20 wach geworden und hatte da so eine Idee für die Sprites - habe dann eine Stunde wach gelegen und alles theoretisch im Kopf "vorprogrammiert"... natürlich konnte ich nicht mehr einschlafen!! Ich bin dann also aufgestanden, doppelter Kaffee und habe es auf dem Mac umgesetzt...

Ich freue mich schon so richtig auf die Fujiama... 4 Tage am Stück Zeit nur für den Atari!!! Nichts anderes!

Die Softwaresprites sind echt cool... es gibt eine enorme Freiheit beim programmieren und viele viele Vorteile und Möglichkeiten - das hätte ich nicht erwartet. Ich wollte die Technik einfach nur beherrschen und verstehen - das eigentliche Potential erkenne ich aber erst jetzt so langsam. Spiele wie R-Type oder Cybex aber auch viele andere gingen gar nicht ohne. Ich verstehe gar nicht, warum dieses Thema so unterrepresentiert ist...

Gruß Peter

Antworten

... also ursprünglich wollte ich es nur verstehen und "können" - jetzt merke ich die Möglichkeiten, die das bietet. Klar, es ist schwierig und zunächst auch aufwendiger - ich habe jetzt 2-3 Wochen intensiv gebraucht. Du kennst das ja - mit der Engine hast du sicherlich auch viel Zeit gebraucht, um sie zu durchdringen. Die Kollision wird gar nicht so schwierig sein, da ich eh schon ständig den Hintergrundbildschirm abscannen und sichern muss - die großen Sprites aus vielen kleinen zu erstellen wird auch relativ einfach sein. Die Spriteanimation wird schwieriger und aufwendiger sein. Bei einem 4-Bit Sprite (so wie bei mir im Antic D) brauche ich ja pro kleinste Einheit 4 jeweils um ein Bit geshiftete Datensätze und dazu die Maske. Bei den PM muss man allerdings auch viel rechnen - die Vertikalbewegung ist hier zB viel aufwendiger...und wenn ich an die elende Kollisionserkennung denke... puh, was habe ich mir da einen abgebrochen bei einem scrollenden System ... Ich denke das Hauptproblem wird der Speicher sein, daher mache ich mich schon innerlich auf die Bank-Programmierung des 130 XE bereit. Ich werde mehr Speicher brauchen!!! Gruß Peter

Antworten

Hi Janko, klar ist das ok für mich! Finde ich gut, daß du das im Abbuc vorstellst!!

Ich bin jetzt gerade bei CoE wieder dran und verbinde den Parallax mit den Softwaresprites. Deine schöne Engine mache ich als nächstes rein mit Track 2 allerdings.

Da nehme ich einfach deine Demo und kopiere dann die Sounds von den Tracks um?

Ansonsten habe ich mir lange überlegt, wie ich den Scroller am besten aufbaue. Die zündende Idee kam mir gestern und würde erhebliche Probleme minimieren. Ich lasse den Parallax jeweils im schmalen Streifen oben und unten scrollen - mit unterschiedlicher Geschwindigkeit. Das Scrolling in der Mitte wo die "Spielzone" ist, lasse ich komplett ohne scroll - dafür werde ich dann viel mehr Softwaresprites bauen, die folgende Aufgaben übernehmen: 1. Gegnerraumschiffe (5-8) 2. Gegnerschüsse (jeweils 2 pro Schiff) 3. Landschaftsteile (die scrollen nicht, bewegen sich. aber entsprechend des oberen und unteren Parallax).

Die P/M nutze ich für das eigene Raumschiff und die eigenen Schüsse. Damit habe ich sowohl das scrolling als auch die Kollisionserkennung gelöst... so der Plan ;-) Evt. gibt es einen 2-Player-Modus. Der untere Bereich ist dann für die Anzeige Score, Schiffe, Player etc.

Ich sende die mal ein erstes Video ... der Parallax wird noch mit Random gefüllt... Wie findest du das ??

Gruß Peter

Antworten

ja Gebäude bzw Landschaftsteile… habe mal kürzlich eine Demo gesehen und fand das echt cool.. suche ich mal raus

Antworten

Hallo Janko, vielen Dank erstmal. Ich baue das später nach der Arbeit ein und schaue mal, ob ich das noch testen kann... vielleicht reicht es noch für Andreas... Die Woche war anstrengend, habe zu viel im Garten gearbeitet.. wir bekommen morgen Besuch und wollten alles fertig machen - jetzt ist mein Großer krank (vielleicht Corona) und alles wird abgesagt... Grüße Peter

Antworten